// index.js
Page({
  data: {
    currentTab: 0,
    searchText: '',
    selectedSubject: '推荐',
    scrollOffset: 0,
    startX: 0,
    startOffset: 0,
    isDragging: false,
    isSearchFocused: false
  },

  onLoad: function (options) {
    console.log('首页加载');
  },

  onShow: function () {
    console.log('首页显示');
  },

  // 搜索输入事件
  onSearchInput: function(e) {
    this.setData({
      searchText: e.detail.value
    });
  },

  // 搜索框获得焦点
  onSearchFocus: function(e) {
    this.setData({
      isSearchFocused: true
    });
  },

  // 搜索框失去焦点
  onSearchBlur: function(e) {
    // 如果搜索框为空，则显示提示信息
    if (!this.data.searchText || this.data.searchText.trim() === '') {
      this.setData({
        isSearchFocused: false
      });
    }
  },

  // 搜索确认事件（键盘搜索按钮）
  onSearchConfirm: function(e) {
    this.performSearch(e.detail.value);
  },

  // 搜索按钮点击事件
  onSearchTap: function() {
    this.performSearch(this.data.searchText);
  },

  // 执行搜索
  performSearch: function(keyword) {
    if (!keyword || keyword.trim() === '') {
      wx.showToast({
        title: '请输入搜索内容',
        icon: 'none',
        duration: 2000
      });
      return;
    }

    console.log('搜索关键词:', keyword);
    
    // 显示搜索中提示
    wx.showLoading({
      title: '搜索中...',
      mask: true
    });

    // 模拟搜索请求
    setTimeout(() => {
      wx.hideLoading();
      
      // 这里可以添加实际的搜索逻辑
      // 比如跳转到搜索结果页面或显示搜索结果
      wx.showToast({
        title: `搜索"${keyword}"`,
        icon: 'success',
        duration: 2000
      });

      // 示例：跳转到搜索结果页面（需要创建对应页面）
      // wx.navigateTo({
      //   url: `/pages/search/search?keyword=${encodeURIComponent(keyword)}`
      // });
    }, 1000);
  },

  // 学科选择事件
  onSubjectTap: function(e) {
    const subject = e.currentTarget.dataset.subject;
    console.log('选择学科:', subject);

    this.setData({
      selectedSubject: subject
    });

    // 更新选中状态
    this.updateSubjectTabs(subject);

    // 根据选择的学科加载对应内容
    this.loadSubjectContent(subject);
  },

  // 更新学科标签选中状态
  updateSubjectTabs: function(selectedSubject) {
    // 这里可以通过setData更新所有标签的active状态
    // 由于微信小程序的限制，我们需要重新渲染整个标签列表
    const subjects = ['推荐', '语文', '数学', '英语', '物理', '化学', '政治', '地理', '大学语文', '大学数学', '大学英语'];
    const tabs = subjects.map(subject => ({
      name: subject,
      active: subject === selectedSubject
    }));
    
    this.setData({
      subjectTabs: tabs
    });
  },

  // 加载学科内容
  loadSubjectContent: function(subject) {
    console.log('加载学科内容:', subject);

    // 这里可以添加根据学科加载不同内容的逻辑
    // 比如显示不同学科的推荐课程、题目等
    wx.showToast({
      title: `切换到${subject}`,
      icon: 'success',
      duration: 1500
    });
  },

  // 全局导航栏导航事件
  onNavigate: function(e) {
    const page = e.detail.page;
    console.log('导航到页面:', page);
    
    // 这里可以添加页面特定的导航逻辑
    // 组件内部已经处理了页面跳转
  },


  // 触摸开始
  onTouchStart: function(e) {
    this.setData({
      startX: e.touches[0].clientX,
      startOffset: this.data.scrollOffset,
      isDragging: true
    });
  },

  // 触摸移动
  onTouchMove: function(e) {
    if (!this.data.isDragging) return;
    
    const currentX = e.touches[0].clientX;
    const deltaX = currentX - this.data.startX;
    let newOffset = this.data.startOffset + deltaX;
    
    // 精确计算滑动范围，消除右侧空白
    const screenWidth = wx.getSystemInfoSync().windowWidth;
    const sectionMargin = 20; // 学科区域左右边距
    const containerPadding = 20; // 学科区域左右padding
    const visibleWidth = screenWidth - sectionMargin * 2 - containerPadding * 2; // 可见区域宽度
    
    const buttonWidth = 90; // 每个按钮的实际宽度
    const buttonCount = 20; // 学科按钮总数
    const gap = 8; // 按钮间距
    const totalContentWidth = buttonCount * buttonWidth + (buttonCount - 1) * gap; // 总内容宽度
    
    const maxOffset = 0; // 不能向右滑动
    const minOffset = Math.min(0, -(totalContentWidth - visibleWidth)); // 精确计算，消除多余空白
    
    if (newOffset > maxOffset) {
      newOffset = maxOffset;
    } else if (newOffset < minOffset) {
      newOffset = minOffset;
    }
    
    this.setData({
      scrollOffset: newOffset
    });
  },

  // 触摸结束
  onTouchEnd: function(e) {
    // 触摸结束时进行精确边界检查，消除右侧空白
    let finalOffset = this.data.scrollOffset;
    
    const screenWidth = wx.getSystemInfoSync().windowWidth;
    const sectionMargin = 20;
    const containerPadding = 20;
    const visibleWidth = screenWidth - sectionMargin * 2 - containerPadding * 2;
    
    const buttonWidth = 90;
    const buttonCount = 20;
    const gap = 8;
    const totalContentWidth = buttonCount * buttonWidth + (buttonCount - 1) * gap;
    
    // 确保不能向右滑动
    if (finalOffset > 0) {
      finalOffset = 0;
    }
    
    // 精确计算最小偏移量，消除多余空白
    const minOffset = Math.min(0, -(totalContentWidth - visibleWidth));
    if (finalOffset < minOffset) {
      finalOffset = minOffset;
    }
    
    this.setData({
      isDragging: false,
      scrollOffset: finalOffset
    });
  },


  // 底部导航栏点击事件
  onTabTap: function(e) {
    const index = parseInt(e.currentTarget.dataset.index);
    console.log('点击底部导航:', index);
    
    switch(index) {
      case 0:
        // 首页，不需要跳转
        break;
      case 1:
        // 消息页面
        if (typeof wx !== 'undefined' && wx.navigateTo) {
          wx.navigateTo({
            url: '/pages/message/message'
          });
        } else {
          // 在浏览器环境中使用window.location
          window.location.href = '/pages/message/message.wxml';
        }
        break;
      case 2:
        // 排行榜页面
        if (typeof wx !== 'undefined' && wx.navigateTo) {
          wx.navigateTo({
            url: '/pages/ranking/ranking'
          });
        } else {
          // 在浏览器环境中使用window.location
          window.location.href = '/pages/ranking/ranking.wxml';
        }
        break;
      case 3:
        // 个人中心页面
        if (typeof wx !== 'undefined' && wx.navigateTo) {
          wx.navigateTo({
            url: '/pages/profile/profile'
          });
        } else {
          // 在浏览器环境中使用window.location
          window.location.href = '/pages/profile/profile.wxml';
        }
        break;
      default:
        console.log('未知导航项');
    }
  }
})
